package com.order.domain.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 订单操作记录表
 * </p>
 *
 * @author 小杰大人
 * @since 2025-10-19
 */
@Getter
@Setter
@ToString
@TableName("order_operation_log")
@ApiModel(value = "OrderOperationLog对象", description = "订单操作记录表")
@Builder
public class OrderOperationLog implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 订单ID
     */
    @TableField("order_id")
    @ApiModelProperty("订单ID")
    private Long orderId;

    /**
     * 订单编号
     */
    @TableField("order_no")
    @ApiModelProperty("订单编号")
    private String orderNo;

    /**
     * 操作类型:	    1:创建订单	    2:发起支付	    3:支付成功	    4:支付失败	    5:用户取消	    6:系统自动取消	    7:发起退款	    8:退款成功	    9:退款失败	    10:订单完成
     */
    @TableField("type")
    @ApiModelProperty("操作类型:	    1:创建订单	    2:发起支付	    3:支付成功	    4:支付失败	    5:用户取消	    6:系统自动取消	    7:发起退款	    8:退款成功	    9:退款失败	    10:订单完成")
    private Byte type;

    /**
     * 操作描述
     */
    @ApiModelProperty("操作描述")
    @TableField("operation_desc")
    private String operationDesc;

    /**
     * 操作人ID(用户ID/系统=0)
     */
    @TableField("operator_id")
    @ApiModelProperty("操作人ID(用户ID/系统=0)")
    private Long operatorId;

    /**
     * 操作人类型:1系统 2用户 3管理员
     */
    @TableField("operator_type")
    @ApiModelProperty("操作人类型:1系统 2用户 3管理员")
    private Byte operatorType;

    /**
     * 操作参数(JSON格式)
     */
    @TableField("operation_params")
    @ApiModelProperty("操作参数(JSON格式)")
    private String operationParams;

    /**
     * 操作IP地址
     */
    @TableField("ip_address")
    @ApiModelProperty("操作IP地址")
    private String ipAddress;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField("create_time")
    private LocalDateTime createTime;
}
